<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: navo/algorithm/crypto/symmetric/aes.c文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li class="current"><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>文件列表</span></a></li>
      <li><a href="globals.html"><span>全局定义</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">宏定义</a> &#124;
<a href="#func-members">函数</a> &#124;
<a href="#var-members">变量</a>  </div>
  <div class="headertitle">
<h1>navo/algorithm/crypto/symmetric/aes.c文件参考</h1>  </div>
</div>
<div class="contents">

<p>AES.  
<a href="#_details">更多...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="aes_8h_source.html">aes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="endian_8h_source.html">../../../port/endian.h</a>&quot;</code><br/>
</div>
<p><a href="aes_8c_source.html">浏览该文件的源代码。</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae653378439cc655225f2d36ece7f3bb5"></a><!-- doxytag: member="aes.c::TURN" ref="ae653378439cc655225f2d36ece7f3bb5" args="(x, n)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TURN</b>(x, n)&#160;&#160;&#160;(((x) &gt;&gt; ((n) &lt;&lt; 3)) &amp; 0xFF)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>STAR_X</b>(x)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>IMIX_COL</b>(y, x)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>LS_BOX</b>(x)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>LOOP4</b>(i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>LOOP6</b>(i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>LOOP8_TOPHALF</b>(i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>LOOP8</b>(i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>F_RN</b>(bo, bi, n, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>F_NROUND</b>(bo, bi, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>F_RL</b>(bo, bi, n, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>F_LROUND</b>(bo, bi, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>I_RN</b>(bo, bi, n, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>I_NROUND</b>(bo, bi, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>I_RL</b>(bo, bi, n, k)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>I_LROUND</b>(bo, bi, k)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
函数</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga91903d33f7c01c76c941990846da6bd1"></a><!-- doxytag: member="aes.c::__aes_set_key" ref="ga91903d33f7c01c76c941990846da6bd1" args="(aes_key *key, uint32_t *src_key, size_t cnt)" -->
NV_IMPL int&#160;</td><td class="memItemRight" valign="bottom"><b>__aes_set_key</b> (<a class="el" href="structaes__key.html">aes_key</a> *key, uint32_t *src_key, size_t cnt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga42200ab8a0c35ba7fe8177067c2bb34f"></a><!-- doxytag: member="aes.c::__aes_encrypt" ref="ga42200ab8a0c35ba7fe8177067c2bb34f" args="(uint32_t *esk, size_t cnt, uint32_t *dst, uint32_t *src)" -->
NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><b>__aes_encrypt</b> (uint32_t *esk, size_t cnt, uint32_t *dst, uint32_t *src)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e6236989496968d5748c4c7b5eceeea"></a><!-- doxytag: member="aes.c::__aes_decrypt" ref="ga4e6236989496968d5748c4c7b5eceeea" args="(uint32_t *dsk, size_t cnt, uint32_t *dst, uint32_t *src)" -->
NV_IMPL void&#160;</td><td class="memItemRight" valign="bottom"><b>__aes_decrypt</b> (uint32_t *dsk, size_t cnt, uint32_t *dst, uint32_t *src)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
变量</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>RCO_TBL</b> [10]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71140f26a398e36572f22c9c85d9771f"></a><!-- doxytag: member="aes.c::FT_TBL" ref="a71140f26a398e36572f22c9c85d9771f" args="[4][256]" -->
const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>FT_TBL</b> [4][256]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9afc7a96540ac30b5f9bae9ee7104b8f"></a><!-- doxytag: member="aes.c::FL_TBL" ref="a9afc7a96540ac30b5f9bae9ee7104b8f" args="[4][256]" -->
const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>FL_TBL</b> [4][256]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cdab8f27e048d35b71a8f63d93abe20"></a><!-- doxytag: member="aes.c::IT_TBL" ref="a7cdab8f27e048d35b71a8f63d93abe20" args="[4][256]" -->
const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>IT_TBL</b> [4][256]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef32832e1d5273adb4a535ea75ce0a70"></a><!-- doxytag: member="aes.c::IL_TBL" ref="aef32832e1d5273adb4a535ea75ce0a70" args="[4][256]" -->
const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>IL_TBL</b> [4][256]</td></tr>
</table>
<hr/><a name="_details"></a><h2>详细描述</h2>
<div class="textblock"><p>AES. </p>
<p>Copyright (C) 2012-2022, Henry Kwok 郭弘扬. All rights reserved </p>

<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>中定义。</p>
</div><hr/><h2>宏定义文档</h2>
<a class="anchor" id="a84b786ab96edac1d81cc9e38671b0661"></a><!-- doxytag: member="aes.c::STAR_X" ref="a84b786ab96edac1d81cc9e38671b0661" args="(x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define STAR_X</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">(((x) &amp; 0x7F7F7F7FUL) &lt;&lt; 1) ^ \
    ((((x) &amp; 0x80808080UL) &gt;&gt; 7) * 0x1B)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01084">1084</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ae1ef26ec151d14d8ff58956d48d4e1e2"></a><!-- doxytag: member="aes.c::IMIX_COL" ref="ae1ef26ec151d14d8ff58956d48d4e1e2" args="(y, x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IMIX_COL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">y, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {            \
        u = STAR_X(x);              \
        v = STAR_X(u);              \
        w = STAR_X(v);              \
        t = w ^ (x);                \
        (y) = u ^ v ^ w;            \
        (y) ^= <a class="code" href="group___xE4_xBA_xA4_xE6_x8D_xA2_xE5_xAD_x97_xE5_xBA_x8F.html#gaa5c40c056c3a176e3fe842399a04dc0a" title="右旋转32位整数b位">__ror32</a>(u ^ t, 8) ^  \
            <a class="code" href="group___xE4_xBA_xA4_xE6_x8D_xA2_xE5_xAD_x97_xE5_xBA_x8F.html#gaa5c40c056c3a176e3fe842399a04dc0a" title="右旋转32位整数b位">__ror32</a>(v ^ t, 16) ^    \
            <a class="code" href="group___xE4_xBA_xA4_xE6_x8D_xA2_xE5_xAD_x97_xE5_xBA_x8F.html#gaa5c40c056c3a176e3fe842399a04dc0a" title="右旋转32位整数b位">__ror32</a>(t, 24);         \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01088">1088</a>行定义。</p>

</div>
</div>
<a class="anchor" id="aad247405e4995e7aee5bce249ba4d104"></a><!-- doxytag: member="aes.c::LS_BOX" ref="aad247405e4995e7aee5bce249ba4d104" args="(x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LS_BOX</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">FL_TBL[0][TURN(x, 0)] ^ FL_TBL[1][TURN(x, 1)] ^ \
    FL_TBL[2][TURN(x, 2)] ^ FL_TBL[3][TURN(x, 3)]
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01099">1099</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ab5cabc3380dcd6e169d733effcb162f6"></a><!-- doxytag: member="aes.c::LOOP4" ref="ab5cabc3380dcd6e169d733effcb162f6" args="(i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOOP4</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                    \
        t = <a class="code" href="group___xE4_xBA_xA4_xE6_x8D_xA2_xE5_xAD_x97_xE5_xBA_x8F.html#gaa5c40c056c3a176e3fe842399a04dc0a" title="右旋转32位整数b位">__ror32</a>(t, 8);                              \
        t = LS_BOX(t) ^ RCO_TBL[i];                     \
        t ^= esk[(i &lt;&lt; 2)    ]; esk[(i &lt;&lt; 2) + 4] = t;  \
        t ^= esk[(i &lt;&lt; 2) + 1]; esk[(i &lt;&lt; 2) + 5] = t;  \
        t ^= esk[(i &lt;&lt; 2) + 2]; esk[(i &lt;&lt; 2) + 6] = t;  \
        t ^= esk[(i &lt;&lt; 2) + 3]; esk[(i &lt;&lt; 2) + 7] = t;  \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01103">1103</a>行定义。</p>

</div>
</div>
<a class="anchor" id="af200c52287e37a1f0f7a6ceebe739589"></a><!-- doxytag: member="aes.c::LOOP6" ref="af200c52287e37a1f0f7a6ceebe739589" args="(i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOOP6</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                \
        t = <a class="code" href="group___xE4_xBA_xA4_xE6_x8D_xA2_xE5_xAD_x97_xE5_xBA_x8F.html#gaa5c40c056c3a176e3fe842399a04dc0a" title="右旋转32位整数b位">__ror32</a>(t, 8);                          \
        t = LS_BOX(t) ^ RCO_TBL[i];                 \
        t ^= esk[6 * i    ]; esk[6 * i +  6] = t;   \
        t ^= esk[6 * i + 1]; esk[6 * i +  7] = t;   \
        t ^= esk[6 * i + 2]; esk[6 * i +  8] = t;   \
        t ^= esk[6 * i + 3]; esk[6 * i +  9] = t;   \
        t ^= esk[6 * i + 4]; esk[6 * i + 10] = t;   \
        t ^= esk[6 * i + 5]; esk[6 * i + 11] = t;   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01112">1112</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a75b849f97b5d5d58051226bee4503119"></a><!-- doxytag: member="aes.c::LOOP8_TOPHALF" ref="a75b849f97b5d5d58051226bee4503119" args="(i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOOP8_TOPHALF</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                \
        t = <a class="code" href="group___xE4_xBA_xA4_xE6_x8D_xA2_xE5_xAD_x97_xE5_xBA_x8F.html#gaa5c40c056c3a176e3fe842399a04dc0a" title="右旋转32位整数b位">__ror32</a>(t, 8);                                  \
        t = LS_BOX(t) ^ RCO_TBL[i];                         \
        t ^= esk[(i &lt;&lt; 3)    ]; esk[(i &lt;&lt; 3) +  8] = t;     \
        t ^= esk[(i &lt;&lt; 3) + 1]; esk[(i &lt;&lt; 3) +  9] = t;     \
        t ^= esk[(i &lt;&lt; 3) + 2]; esk[(i &lt;&lt; 3) + 10] = t;     \
        t ^= esk[(i &lt;&lt; 3) + 3]; esk[(i &lt;&lt; 3) + 11] = t;     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01123">1123</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a878806362e39933dd78cbf8d9db13747"></a><!-- doxytag: member="aes.c::LOOP8" ref="a878806362e39933dd78cbf8d9db13747" args="(i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOOP8</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                        \
        LOOP8_TOPHALF(i);                                   \
        t  = esk[(i &lt;&lt; 3) + 4] ^ LS_BOX(t);                 \
        esk[(i &lt;&lt; 3) + 12] = t;                             \
        t ^= esk[(i &lt;&lt; 3) + 5]; esk[(i &lt;&lt; 3) + 13] = t;     \
        t ^= esk[(i &lt;&lt; 3) + 6]; esk[(i &lt;&lt; 3) + 14] = t;     \
        t ^= esk[(i &lt;&lt; 3) + 7]; esk[(i &lt;&lt; 3) + 15] = t;     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01132">1132</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a1aea79699a68747fdd88a3e11ebff50c"></a><!-- doxytag: member="aes.c::F_RN" ref="a1aea79699a68747fdd88a3e11ebff50c" args="(bo, bi, n, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define F_RN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        bo[n] = FT_TBL[0][TURN(bi[n], 0)] ^                 \
            FT_TBL[1][TURN(bi[(n + 1) &amp; 3], 1)] ^           \
            FT_TBL[2][TURN(bi[(n + 2) &amp; 3], 2)] ^           \
            FT_TBL[3][TURN(bi[(n + 3) &amp; 3], 3)] ^ *(k + n); \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01142">1142</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a843ea6a30df969273a1d322915367009"></a><!-- doxytag: member="aes.c::F_NROUND" ref="a843ea6a30df969273a1d322915367009" args="(bo, bi, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define F_NROUND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                \
        F_RN(bo, bi, 0, k); F_RN(bo, bi, 1, k); \
        F_RN(bo, bi, 2, k); F_RN(bo, bi, 3, k); \
        k += 4;                                 \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01149">1149</a>行定义。</p>

</div>
</div>
<a class="anchor" id="afb85b272fd6f130580abfbba7091357b"></a><!-- doxytag: member="aes.c::F_RL" ref="afb85b272fd6f130580abfbba7091357b" args="(bo, bi, n, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define F_RL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                    \
        bo[n] = FL_TBL[0][TURN(bi[n], 0)] ^                     \
            FL_TBL[1][TURN(bi[(n + 1) &amp; 3], 1)] ^               \
            FL_TBL[2][TURN(bi[(n + 2) &amp; 3], 2)] ^               \
            FL_TBL[3][TURN(bi[(n + 3) &amp; 3], 3)] ^ *(k + n);     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01155">1155</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a6a79c51d294360aef6082ff4500b5c7e"></a><!-- doxytag: member="aes.c::F_LROUND" ref="a6a79c51d294360aef6082ff4500b5c7e" args="(bo, bi, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define F_LROUND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                    \
        F_RL(bo, bi, 0, k); F_RL(bo, bi, 1, k);     \
        F_RL(bo, bi, 2, k); F_RL(bo, bi, 3, k);     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01162">1162</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a39b2e9bde1ea20b68bc6e34bee4f765e"></a><!-- doxytag: member="aes.c::I_RN" ref="a39b2e9bde1ea20b68bc6e34bee4f765e" args="(bo, bi, n, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_RN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                    \
        bo[n] = IT_TBL[0][TURN(bi[n], 0)] ^                     \
            IT_TBL[1][TURN(bi[(n + 3) &amp; 3], 1)] ^               \
            IT_TBL[2][TURN(bi[(n + 2) &amp; 3], 2)] ^               \
            IT_TBL[3][TURN(bi[(n + 1) &amp; 3], 3)] ^ *(k + n);     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01168">1168</a>行定义。</p>

</div>
</div>
<a class="anchor" id="afbdad202c07ce809aa6f683d03f06aeb"></a><!-- doxytag: member="aes.c::I_NROUND" ref="afbdad202c07ce809aa6f683d03f06aeb" args="(bo, bi, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_NROUND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                \
        I_RN(bo, bi, 0, k); I_RN(bo, bi, 1, k); \
        I_RN(bo, bi, 2, k); I_RN(bo, bi, 3, k); \
        k += 4;                                 \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01175">1175</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a26db0cb222424ba3b12962d586e056e2"></a><!-- doxytag: member="aes.c::I_RL" ref="a26db0cb222424ba3b12962d586e056e2" args="(bo, bi, n, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_RL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                \
        bo[n] = IL_TBL[0][TURN(bi[n], 0)] ^                 \
        IL_TBL[1][TURN(bi[(n + 3) &amp; 3], 1)] ^               \
        IL_TBL[2][TURN(bi[(n + 2) &amp; 3], 2)] ^               \
        IL_TBL[3][TURN(bi[(n + 1) &amp; 3], 3)] ^ *(k + n);     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01181">1181</a>行定义。</p>

</div>
</div>
<a class="anchor" id="a18d3d355ac2a7df86bf39cfff94ffc2b"></a><!-- doxytag: member="aes.c::I_LROUND" ref="a18d3d355ac2a7df86bf39cfff94ffc2b" args="(bo, bi, k)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_LROUND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bo, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bi, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">k&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                    \
        I_RL(bo, bi, 0, k); I_RL(bo, bi, 1, k);     \
        I_RL(bo, bi, 2, k); I_RL(bo, bi, 3, k);     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l01188">1188</a>行定义。</p>

</div>
</div>
<hr/><h2>变量文档</h2>
<a class="anchor" id="a94c5ad1b502b6947a986bee40b6e47c2"></a><!-- doxytag: member="aes.c::RCO_TBL" ref="a94c5ad1b502b6947a986bee40b6e47c2" args="[10]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const uint32_t RCO_TBL[10]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>初始化序列：</b><div class="fragment"><pre class="fragment"> {
    1, 2, 4, 8, 16, 32, 64, 128, 27, 54
}
</pre></div>
<p>在文件<a class="el" href="aes_8c_source.html">aes.c</a>第<a class="el" href="aes_8c_source.html#l00022">22</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:38 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
